package org.exampleUtils01.poi;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.CellRangeAddressList;
import org.apache.poi.xssf.usermodel.*;

import java.io.*;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 * 利用开源组件POI3.0.2动态导出EXCEL文档
 *
 * @author   wangtao
 * @version v1.0
 * @param <T>
 *            应用泛型，代表任意一个符合javabean风格的类
 *            注意这里为了简单起见，boolean型的属性xxx的get器方式为getXxx(),而不是isXxx()
 */
public class ExportExcel<T>
{
	private static final String DATE_CONVERT_CLASS = "com.xiaoniu56.utils.poi.DateConvert";
	private static final String provinceList = "[ { 'name': '北京市', 'cityList': [ { 'name': '北京城区', 'areaList': [ '东城区', '西城区', '朝阳区', '丰台区', '石景山区', '海淀区', '门头沟区', '房山区', '通州区', '顺义区', '昌平区', '大兴区', '怀柔区', '平谷区', '密云区', '延庆区' ] } ] }, { 'name': '天津市', 'cityList': [ { 'name': '天津城区', 'areaList': [ '和平区', '河东区', '河西区', '南开区', '河北区', '红桥区', '东丽区', '西青区', '津南区', '北辰区', '武清区', '宝坻区', '滨海新区', '宁河区', '静海区', '蓟州区' ] } ] }, { 'name': '河北省', 'cityList': [ { 'name': '石家庄市', 'areaList': [ '长安区', '桥西区', '新华区', '井陉矿区', '裕华区', '藁城区', '鹿泉区', '栾城区', '井陉县', '正定县', '行唐县', '灵寿县', '高邑县', '深泽县', '赞皇县', '无极县', '平山县', '元氏县', '赵县', '辛集市', '晋州市', '新乐市' ] }, { 'name': '唐山市', 'areaList': [ '路南区', '路北区', '古冶区', '开平区', '丰南区', '丰润区', '曹妃甸区', '滦南县', '乐亭县', '迁西县', '玉田县', '遵化市', '迁安市', '滦州市' ] }, { 'name': '秦皇岛市', 'areaList': [ '海港区', '山海关区', '北戴河区', '抚宁区', '青龙满族自治县', '昌黎县', '卢龙县' ] }, { 'name': '邯郸市', 'areaList': [ '邯山区', '丛台区', '复兴区', '峰峰矿区', '肥乡区', '永年区', '临漳县', '成安县', '大名县', '涉县', '磁县', '邱县', '鸡泽县', '广平县', '馆陶县', '魏县', '曲周县', '武安市' ] }, { 'name': '邢台市', 'areaList': [ '襄都区', '信都区', '任泽区', '南和区', '临城县', '内丘县', '柏乡县', '隆尧县', '宁晋县', '巨鹿县', '新河县', '广宗县', '平乡县', '威县', '清河县', '临西县', '南宫市', '沙河市' ] }, { 'name': '保定市', 'areaList': [ '竞秀区', '莲池区', '满城区', '清苑区', '徐水区', '涞水县', '阜平县', '定兴县', '唐县', '高阳县', '容城县', '涞源县', '望都县', '安新县', '易县', '曲阳县', '蠡县', '顺平县', '博野县', '雄县', '涿州市', '定州市', '安国市', '高碑店市' ] }, { 'name': '张家口市', 'areaList': [ '桥东区', '桥西区', '宣化区', '下花园区', '万全区', '崇礼区', '张北县', '康保县', '沽源县', '尚义县', '蔚县', '阳原县', '怀安县', '怀来县', '涿鹿县', '赤城县' ] }, { 'name': '承德市', 'areaList': [ '双桥区', '双滦区', '鹰手营子矿区', '承德县', '兴隆县', '滦平县', '隆化县', '丰宁满族自治县', '宽城满族自治县', '围场满族蒙古族自治县', '平泉市' ] }, { 'name': '沧州市', 'areaList': [ '新华区', '运河区', '沧县', '青县', '东光县', '海兴县', '盐山县', '肃宁县', '南皮县', '吴桥县', '献县', '孟村回族自治县', '泊头市', '任丘市', '黄骅市', '河间市' ] }, { 'name': '廊坊市', 'areaList': [ '市辖区', '安次区', '广阳区', '固安县', '永清县', '香河县', '大城县', '文安县', '大厂回族自治县', '霸州市', '三河市' ] }, { 'name': '衡水市', 'areaList': [ '桃城区', '冀州区', '枣强县', '武邑县', '武强县', '饶阳县', '安平县', '故城县', '景县', '阜城县', '深州市' ] } ] }, { 'name': '山西省', 'cityList': [ { 'name': '太原市', 'areaList': [ '小店区', '迎泽区', '杏花岭区', '尖草坪区', '万柏林区', '晋源区', '清徐县', '阳曲县', '娄烦县', '古交市' ] }, { 'name': '大同市', 'areaList': [ '新荣区', '平城区', '云冈区', '云州区', '阳高县', '天镇县', '广灵县', '灵丘县', '浑源县', '左云县' ] }, { 'name': '阳泉市', 'areaList': [ '城区', '矿区', '郊区', '平定县', '盂县' ] }, { 'name': '长治市', 'areaList': [ '潞州区', '上党区', '屯留区', '潞城区', '襄垣县', '平顺县', '黎城县', '壶关县', '长子县', '武乡县', '沁县', '沁源县' ] }, { 'name': '晋城市', 'areaList': [ '城区', '沁水县', '阳城县', '陵川县', '泽州县', '高平市' ] }, { 'name': '朔州市', 'areaList': [ '朔城区', '平鲁区', '山阴县', '应县', '右玉县', '怀仁市' ] }, { 'name': '晋中市', 'areaList': [ '榆次区', '太谷区', '榆社县', '左权县', '和顺县', '昔阳县', '寿阳县', '祁县', '平遥县', '灵石县', '介休市' ] }, { 'name': '运城市', 'areaList': [ '盐湖区', '临猗县', '万荣县', '闻喜县', '稷山县', '新绛县', '绛县', '垣曲县', '夏县', '平陆县', '芮城县', '永济市', '河津市' ] }, { 'name': '忻州市', 'areaList': [ '忻府区', '定襄县', '五台县', '代县', '繁峙县', '宁武县', '静乐县', '神池县', '五寨县', '岢岚县', '河曲县', '保德县', '偏关县', '原平市' ] }, { 'name': '临汾市', 'areaList': [ '市辖区', '尧都区', '曲沃县', '翼城县', '襄汾县', '洪洞县', '古县', '安泽县', '浮山县', '吉县', '乡宁县', '大宁县', '隰县', '永和县', '蒲县', '汾西县', '侯马市', '霍州市' ] }, { 'name': '吕梁市', 'areaList': [ '离石区', '文水县', '交城县', '兴县', '临县', '柳林县', '石楼县', '岚县', '方山县', '中阳县', '交口县', '孝义市', '汾阳市' ] } ] }, { 'name': '内蒙古自治区', 'cityList': [ { 'name': '呼和浩特市', 'areaList': [ '新城区', '回民区', '玉泉区', '赛罕区', '土默特左旗', '托克托县', '和林格尔县', '清水河县', '武川县' ] }, { 'name': '包头市', 'areaList': [ '东河区', '昆都仑区', '青山区', '石拐区', '白云鄂博矿区', '九原区', '土默特右旗', '固阳县', '达尔罕茂明安联合旗' ] }, { 'name': '乌海市', 'areaList': [ '海勃湾区', '海南区', '乌达区' ] }, { 'name': '赤峰市', 'areaList': [ '红山区', '元宝山区', '松山区', '阿鲁科尔沁旗', '巴林左旗', '巴林右旗', '林西县', '克什克腾旗', '翁牛特旗', '喀喇沁旗', '宁城县', '敖汉旗' ] }, { 'name': '通辽市', 'areaList': [ '科尔沁区', '科尔沁左翼中旗', '科尔沁左翼后旗', '开鲁县', '库伦旗', '奈曼旗', '扎鲁特旗', '霍林郭勒市' ] }, { 'name': '鄂尔多斯市', 'areaList': [ '东胜区', '康巴什区', '达拉特旗', '准格尔旗', '鄂托克前旗', '鄂托克旗', '杭锦旗', '乌审旗', '伊金霍洛旗' ] }, { 'name': '呼伦贝尔市', 'areaList': [ '海拉尔区', '扎赉诺尔区', '阿荣旗', '莫力达瓦达斡尔族自治旗', '鄂伦春自治旗', '鄂温克族自治旗', '陈巴尔虎旗', '新巴尔虎左旗', '新巴尔虎右旗', '满洲里市', '牙克石市', '扎兰屯市', '额尔古纳市', '根河市' ] }, { 'name': '巴彦淖尔市', 'areaList': [ '临河区', '五原县', '磴口县', '乌拉特前旗', '乌拉特中旗', '乌拉特后旗', '杭锦后旗' ] }, { 'name': '乌兰察布市', 'areaList': [ '集宁区', '卓资县', '化德县', '商都县', '兴和县', '凉城县', '察哈尔右翼前旗', '察哈尔右翼中旗', '察哈尔右翼后旗', '四子王旗', '丰镇市' ] }, { 'name': '兴安盟', 'areaList': [ '乌兰浩特市', '阿尔山市', '科尔沁右翼前旗', '科尔沁右翼中旗', '扎赉特旗', '突泉县' ] }, { 'name': '锡林郭勒盟', 'areaList': [ '二连浩特市', '锡林浩特市', '阿巴嘎旗', '苏尼特左旗', '苏尼特右旗', '东乌珠穆沁旗', '西乌珠穆沁旗', '太仆寺旗', '镶黄旗', '正镶白旗', '正蓝旗', '多伦县' ] }, { 'name': '阿拉善盟', 'areaList': [ '阿拉善左旗', '阿拉善右旗', '额济纳旗' ] } ] }, { 'name': '辽宁省', 'cityList': [ { 'name': '沈阳市', 'areaList': [ '和平区', '沈河区', '大东区', '皇姑区', '铁西区', '苏家屯区', '浑南区', '沈北新区', '于洪区', '辽中区', '康平县', '法库县', '新民市' ] }, { 'name': '大连市', 'areaList': [ '中山区', '西岗区', '沙河口区', '甘井子区', '旅顺口区', '金州区', '普兰店区', '长海县', '瓦房店市', '庄河市' ] }, { 'name': '鞍山市', 'areaList': [ '铁东区', '铁西区', '立山区', '千山区', '台安县', '岫岩满族自治县', '海城市' ] }, { 'name': '抚顺市', 'areaList': [ '新抚区', '东洲区', '望花区', '顺城区', '抚顺县', '新宾满族自治县', '清原满族自治县' ] }, { 'name': '本溪市', 'areaList': [ '平山区', '溪湖区', '明山区', '南芬区', '本溪满族自治县', '桓仁满族自治县' ] }, { 'name': '丹东市', 'areaList': [ '元宝区', '振兴区', '振安区', '宽甸满族自治县', '东港市', '凤城市' ] }, { 'name': '锦州市', 'areaList': [ '古塔区', '凌河区', '太和区', '黑山县', '义县', '凌海市', '北镇市' ] }, { 'name': '营口市', 'areaList': [ '站前区', '西市区', '鲅鱼圈区', '老边区', '盖州市', '大石桥市' ] }, { 'name': '阜新市', 'areaList': [ '海州区', '新邱区', '太平区', '清河门区', '细河区', '阜新蒙古族自治县', '彰武县' ] }, { 'name': '辽阳市', 'areaList': [ '白塔区', '文圣区', '宏伟区', '弓长岭区', '太子河区', '辽阳县', '灯塔市' ] }, { 'name': '盘锦市', 'areaList': [ '双台子区', '兴隆台区', '大洼区', '盘山县' ] }, { 'name': '铁岭市', 'areaList': [ '银州区', '清河区', '铁岭县', '西丰县', '昌图县', '调兵山市', '开原市' ] }, { 'name': '朝阳市', 'areaList': [ '双塔区', '龙城区', '朝阳县', '建平县', '喀喇沁左翼蒙古族自治县', '北票市', '凌源市' ] }, { 'name': '葫芦岛市', 'areaList': [ '连山区', '龙港区', '南票区', '绥中县', '建昌县', '兴城市' ] } ] }, { 'name': '吉林省', 'cityList': [ { 'name': '长春市', 'areaList': [ '南关区', '宽城区', '朝阳区', '二道区', '绿园区', '双阳区', '九台区', '农安县', '榆树市', '德惠市' ] }, { 'name': '吉林市', 'areaList': [ '昌邑区', '龙潭区', '船营区', '丰满区', '永吉县', '蛟河市', '桦甸市', '舒兰市', '磐石市' ] }, { 'name': '四平市', 'areaList': [ '铁西区', '铁东区', '梨树县', '伊通满族自治县', '公主岭市', '双辽市' ] }, { 'name': '辽源市', 'areaList': [ '龙山区', '西安区', '东丰县', '东辽县' ] }, { 'name': '通化市', 'areaList': [ '东昌区', '二道江区', '通化县', '辉南县', '柳河县', '梅河口市', '集安市' ] }, { 'name': '白山市', 'areaList': [ '浑江区', '江源区', '抚松县', '靖宇县', '长白朝鲜族自治县', '临江市' ] }, { 'name': '松原市', 'areaList': [ '宁江区', '前郭尔罗斯蒙古族自治县', '长岭县', '乾安县', '扶余市' ] }, { 'name': '白城市', 'areaList': [ '洮北区', '镇赉县', '通榆县', '洮南市', '大安市' ] }, { 'name': '延边朝鲜族自治州', 'areaList': [ '延吉市', '图们市', '敦化市', '珲春市', '龙井市', '和龙市', '汪清县', '安图县' ] } ] }, { 'name': '黑龙江省', 'cityList': [ { 'name': '哈尔滨市', 'areaList': [ '道里区', '南岗区', '道外区', '平房区', '松北区', '香坊区', '呼兰区', '阿城区', '双城区', '依兰县', '方正县', '宾县', '巴彦县', '木兰县', '通河县', '延寿县', '尚志市', '五常市' ] }, { 'name': '齐齐哈尔市', 'areaList': [ '龙沙区', '建华区', '铁锋区', '昂昂溪区', '富拉尔基区', '碾子山区', '梅里斯达斡尔族区', '龙江县', '依安县', '泰来县', '甘南县', '富裕县', '克山县', '克东县', '拜泉县', '讷河市' ] }, { 'name': '鸡西市', 'areaList': [ '鸡冠区', '恒山区', '滴道区', '梨树区', '城子河区', '麻山区', '鸡东县', '虎林市', '密山市' ] }, { 'name': '鹤岗市', 'areaList': [ '向阳区', '工农区', '南山区', '兴安区', '东山区', '兴山区', '萝北县', '绥滨县' ] }, { 'name': '双鸭山市', 'areaList': [ '尖山区', '岭东区', '四方台区', '宝山区', '集贤县', '友谊县', '宝清县', '饶河县' ] }, { 'name': '大庆市', 'areaList': [ '萨尔图区', '龙凤区', '让胡路区', '红岗区', '大同区', '肇州县', '肇源县', '林甸县', '杜尔伯特蒙古族自治县' ] }, { 'name': '伊春市', 'areaList': [ '伊美区', '乌翠区', '友好区', '嘉荫县', '汤旺县', '丰林县', '大箐山县', '南岔县', '金林区', '铁力市' ] }, { 'name': '佳木斯市', 'areaList': [ '向阳区', '前进区', '东风区', '郊区', '桦南县', '桦川县', '汤原县', '同江市', '富锦市', '抚远市' ] }, { 'name': '七台河市', 'areaList': [ '新兴区', '桃山区', '茄子河区', '勃利县' ] }, { 'name': '牡丹江市', 'areaList': [ '东安区', '阳明区', '爱民区', '西安区', '林口县', '绥芬河市', '海林市', '宁安市', '穆棱市', '东宁市' ] }, { 'name': '黑河市', 'areaList': [ '爱辉区', '逊克县', '孙吴县', '北安市', '五大连池市', '嫩江市' ] }, { 'name': '绥化市', 'areaList': [ '北林区', '望奎县', '兰西县', '青冈县', '庆安县', '明水县', '绥棱县', '安达市', '肇东市', '海伦市' ] }, { 'name': '大兴安岭地区', 'areaList': [ '漠河市', '加格达奇区', '呼玛县', '塔河县' ] } ] }, { 'name': '上海市','cityList':[{ 'name': '上海城区', 'areaList': [ '黄浦区', '徐汇区', '长宁区', '静安区', '普陀区', '虹口区', '杨浦区', '闵行区', '宝山区', '嘉定区', '浦东新区', '金山区', '松江区', '青浦区', '奉贤区', '崇明区' ] } ] }, { 'name': '江苏省', 'cityList': [ { 'name': '南京市', 'areaList': [ '玄武区', '秦淮区', '建邺区', '鼓楼区', '浦口区', '栖霞区', '雨花台区', '江宁区', '六合区', '溧水区', '高淳区' ] }, { 'name': '无锡市', 'areaList': [ '锡山区', '惠山区', '滨湖区', '梁溪区', '新吴区', '江阴市', '宜兴市' ] }, { 'name': '徐州市', 'areaList': [ '鼓楼区', '云龙区', '贾汪区', '泉山区', '铜山区', '丰县', '沛县', '睢宁县', '新沂市', '邳州市' ] }, { 'name': '常州市', 'areaList': [ '天宁区', '钟楼区', '新北区', '武进区', '金坛区', '溧阳市' ] }, { 'name': '苏州市', 'areaList': [ '虎丘区', '吴中区', '相城区', '姑苏区', '吴江区', '常熟市', '张家港市', '昆山市', '太仓市' ] }, { 'name': '南通市', 'areaList': [ '崇川区', '通州区', '如东县', '启东市', '如皋市', '海门区', '海安市' ] }, { 'name': '连云港市', 'areaList': [ '连云区', '海州区', '赣榆区', '东海县', '灌云县', '灌南县' ] }, { 'name': '淮安市', 'areaList': [ '淮安区', '淮阴区', '清江浦区', '洪泽区', '涟水县', '盱眙县', '金湖县' ] }, { 'name': '盐城市', 'areaList': [ '亭湖区', '盐都区', '大丰区', '响水县', '滨海县', '阜宁县', '射阳县', '建湖县', '东台市' ] }, { 'name': '扬州市', 'areaList': [ '广陵区', '邗江区', '江都区', '宝应县', '仪征市', '高邮市' ] }, { 'name': '镇江市', 'areaList': [ '京口区', '润州区', '丹徒区', '丹阳市', '扬中市', '句容市' ] }, { 'name': '泰州市', 'areaList': [ '海陵区', '高港区', '姜堰区', '兴化市', '靖江市', '泰兴市' ] }, { 'name': '宿迁市', 'areaList': [ '宿城区', '宿豫区', '沭阳县', '泗阳县', '泗洪县' ] } ] }, { 'name': '浙江省', 'cityList': [ { 'name': '杭州市', 'areaList': [ '上城区', '拱墅区', '西湖区', '滨江区', '萧山区', '余杭区', '富阳区', '临安区', '临平区', '钱塘区', '桐庐县', '淳安县', '建德市' ] }, { 'name': '宁波市', 'areaList': [ '海曙区', '江北区', '北仑区', '镇海区', '鄞州区', '奉化区', '象山县', '宁海县', '余姚市', '慈溪市' ] }, { 'name': '温州市', 'areaList': [ '鹿城区', '龙湾区', '瓯海区', '洞头区', '永嘉县', '平阳县', '苍南县', '文成县', '泰顺县', '瑞安市', '乐清市', '龙港市' ] }, { 'name': '嘉兴市', 'areaList': [ '南湖区', '秀洲区', '嘉善县', '海盐县', '海宁市', '平湖市', '桐乡市' ] }, { 'name': '湖州市', 'areaList': [ '吴兴区', '南浔区', '德清县', '长兴县', '安吉县' ] }, { 'name': '绍兴市', 'areaList': [ '越城区', '柯桥区', '上虞区', '新昌县', '诸暨市', '嵊州市' ] }, { 'name': '金华市', 'areaList': [ '婺城区', '金东区', '武义县', '浦江县', '磐安县', '兰溪市', '义乌市', '东阳市', '永康市' ] }, { 'name': '衢州市', 'areaList': [ '柯城区', '衢江区', '常山县', '开化县', '龙游县', '江山市' ] }, { 'name': '舟山市', 'areaList': [ '定海区', '普陀区', '岱山县', '嵊泗县' ] }, { 'name': '台州市', 'areaList': [ '椒江区', '黄岩区', '路桥区', '三门县', '天台县', '仙居县', '温岭市', '临海市', '玉环市' ] }, { 'name': '丽水市', 'areaList': [ '莲都区', '青田县', '缙云县', '遂昌县', '松阳县', '云和县', '庆元县', '景宁畲族自治县', '龙泉市' ] } ] }, { 'name': '安徽省', 'cityList': [ { 'name': '合肥市', 'areaList': [ '瑶海区', '庐阳区', '蜀山区', '包河区', '长丰县', '肥东县', '肥西县', '庐江县', '巢湖市' ] }, { 'name': '芜湖市', 'areaList': [ '镜湖区', '弋江区', '鸠江区', '湾沚区', '繁昌区', '南陵县', '无为市' ] }, { 'name': '蚌埠市', 'areaList': [ '龙子湖区', '蚌山区', '禹会区', '淮上区', '怀远县', '五河县', '固镇县' ] }, { 'name': '淮南市', 'areaList': [ '大通区', '田家庵区', '谢家集区', '八公山区', '潘集区', '凤台县', '寿县' ] }, { 'name': '马鞍山市', 'areaList': [ '花山区', '雨山区', '博望区', '当涂县', '含山县', '和县' ] }, { 'name': '淮北市', 'areaList': [ '杜集区', '相山区', '烈山区', '濉溪县' ] }, { 'name': '铜陵市', 'areaList': [ '铜官区', '郊区', '义安区', '枞阳县' ] }, { 'name': '安庆市', 'areaList': [ '迎江区', '大观区', '宜秀区', '怀宁县', '太湖县', '宿松县', '望江县', '岳西县', '桐城市', '潜山市' ] }, { 'name': '黄山市', 'areaList': [ '屯溪区', '黄山区', '徽州区', '歙县', '休宁县', '黟县', '祁门县' ] }, { 'name': '滁州市', 'areaList': [ '琅琊区', '南谯区', '来安县', '全椒县', '定远县', '凤阳县', '天长市', '明光市' ] }, { 'name': '阜阳市', 'areaList': [ '颍州区', '颍东区', '颍泉区', '临泉县', '太和县', '阜南县', '颍上县', '界首市' ] }, { 'name': '宿州市', 'areaList': [ '埇桥区', '砀山县', '萧县', '灵璧县', '泗县' ] }, { 'name': '六安市', 'areaList': [ '金安区', '裕安区', '叶集区', '霍邱县', '舒城县', '金寨县', '霍山县' ] }, { 'name': '亳州市', 'areaList': [ '谯城区', '涡阳县', '蒙城县', '利辛县' ] }, { 'name': '池州市', 'areaList': [ '贵池区', '东至县', '石台县', '青阳县' ] }, { 'name': '宣城市', 'areaList': [ '宣州区', '郎溪县', '泾县', '绩溪县', '旌德县', '宁国市', '广德市' ] } ] }, { 'name': '福建省', 'cityList': [ { 'name': '福州市', 'areaList': [ '鼓楼区', '台江区', '仓山区', '马尾区', '晋安区', '长乐区', '闽侯县', '连江县', '罗源县', '闽清县', '永泰县', '平潭县', '福清市' ] }, { 'name': '厦门市', 'areaList': [ '思明区', '海沧区', '湖里区', '集美区', '同安区', '翔安区' ] }, { 'name': '莆田市', 'areaList': [ '城厢区', '涵江区', '荔城区', '秀屿区', '仙游县' ] }, { 'name': '三明市', 'areaList': [ '三元区', '明溪县', '清流县', '宁化县', '大田县', '尤溪县', '沙县区', '将乐县', '泰宁县', '建宁县', '永安市' ] }, { 'name': '泉州市', 'areaList': [ '鲤城区', '丰泽区', '洛江区', '泉港区', '惠安县', '安溪县', '永春县', '德化县', '金门县', '石狮市', '晋江市', '南安市' ] }, { 'name': '漳州市', 'areaList': [ '芗城区', '龙文区', '云霄县', '漳浦县', '诏安县', '长泰区', '东山县', '南靖县', '平和县', '华安县', '龙海区' ] }, { 'name': '南平市', 'areaList': [ '延平区', '建阳区', '顺昌县', '浦城县', '光泽县', '松溪县', '政和县', '邵武市', '武夷山市', '建瓯市' ] }, { 'name': '龙岩市', 'areaList': [ '新罗区', '永定区', '长汀县', '上杭县', '武平县', '连城县', '漳平市' ] }, { 'name': '宁德市', 'areaList': [ '蕉城区', '霞浦县', '古田县', '屏南县', '寿宁县', '周宁县', '柘荣县', '福安市', '福鼎市' ] } ] }, { 'name': '江西省', 'cityList': [ { 'name': '南昌市', 'areaList': [ '东湖区', '西湖区', '青云谱区', '青山湖区', '新建区', '红谷滩区', '南昌县', '安义县', '进贤县' ] }, { 'name': '景德镇市', 'areaList': [ '昌江区', '珠山区', '浮梁县', '乐平市' ] }, { 'name': '萍乡市', 'areaList': [ '安源区', '湘东区', '莲花县', '上栗县', '芦溪县' ] }, { 'name': '九江市', 'areaList': [ '濂溪区', '浔阳区', '柴桑区', '武宁县', '修水县', '永修县', '德安县', '都昌县', '湖口县', '彭泽县', '瑞昌市', '共青城市', '庐山市' ] }, { 'name': '新余市', 'areaList': [ '渝水区', '分宜县' ] }, { 'name': '鹰潭市', 'areaList': [ '月湖区', '余江区', '贵溪市' ] }, { 'name': '赣州市', 'areaList': [ '章贡区', '南康区', '赣县区', '信丰县', '大余县', '上犹县', '崇义县', '安远县', '定南县', '全南县', '宁都县', '于都县', '兴国县', '会昌县', '寻乌县', '石城县', '龙南市', '瑞金市' ] }, { 'name': '吉安市', 'areaList': [ '吉州区', '青原区', '吉安县', '吉水县', '峡江县', '新干县', '永丰县', '泰和县', '遂川县', '万安县', '安福县', '永新县', '井冈山市' ] }, { 'name': '宜春市', 'areaList': [ '袁州区', '奉新县', '万载县', '上高县', '宜丰县', '靖安县', '铜鼓县', '丰城市', '樟树市', '高安市' ] }, { 'name': '抚州市', 'areaList': [ '临川区', '东乡区', '南城县', '黎川县', '南丰县', '崇仁县', '乐安县', '宜黄县', '金溪县', '资溪县', '广昌县' ] }, { 'name': '上饶市', 'areaList': [ '信州区', '广丰区', '广信区', '玉山县', '铅山县', '横峰县', '弋阳县', '余干县', '鄱阳县', '万年县', '婺源县', '德兴市' ] } ] }, { 'name': '山东省', 'cityList': [ { 'name': '济南市', 'areaList': [ '历下区', '市中区', '槐荫区', '天桥区', '历城区', '长清区', '章丘区', '济阳区', '莱芜区', '钢城区', '平阴县', '商河县' ] }, { 'name': '青岛市', 'areaList': [ '市南区', '市北区', '黄岛区', '崂山区', '李沧区', '城阳区', '即墨区', '胶州市', '平度市', '莱西市' ] }, { 'name': '淄博市', 'areaList': [ '淄川区', '张店区', '博山区', '临淄区', '周村区', '桓台县', '高青县', '沂源县' ] }, { 'name': '枣庄市', 'areaList': [ '市中区', '薛城区', '峄城区', '台儿庄区', '山亭区', '滕州市' ] }, { 'name': '东营市', 'areaList': [ '东营区', '河口区', '垦利区', '利津县', '广饶县' ] }, { 'name': '烟台市', 'areaList': [ '芝罘区', '福山区', '牟平区', '莱山区', '蓬莱区', '龙口市', '莱阳市', '莱州市', '招远市', '栖霞市', '海阳市' ] }, { 'name': '潍坊市', 'areaList': [ '潍城区', '寒亭区', '坊子区', '奎文区', '临朐县', '昌乐县', '青州市', '诸城市', '寿光市', '安丘市', '高密市', '昌邑市' ] }, { 'name': '济宁市', 'areaList': [ '任城区', '兖州区', '微山县', '鱼台县', '金乡县', '嘉祥县', '汶上县', '泗水县', '梁山县', '曲阜市', '邹城市' ] }, { 'name': '泰安市', 'areaList': [ '泰山区', '岱岳区', '宁阳县', '东平县', '新泰市', '肥城市' ] }, { 'name': '威海市', 'areaList': [ '环翠区', '文登区', '荣成市', '乳山市' ] }, { 'name': '日照市', 'areaList': [ '东港区', '岚山区', '五莲县', '莒县' ] }, { 'name': '临沂市', 'areaList': [ '兰山区', '罗庄区', '河东区', '沂南县', '郯城县', '沂水县', '兰陵县', '费县', '平邑县', '莒南县', '蒙阴县', '临沭县' ] }, { 'name': '德州市', 'areaList': [ '德城区', '陵城区', '宁津县', '庆云县', '临邑县', '齐河县', '平原县', '夏津县', '武城县', '乐陵市', '禹城市' ] }, { 'name': '聊城市', 'areaList': [ '东昌府区', '茌平区', '阳谷县', '莘县', '东阿县', '冠县', '高唐县', '临清市' ] }, { 'name': '滨州市', 'areaList': [ '滨城区', '沾化区', '惠民县', '阳信县', '无棣县', '博兴县', '邹平市' ] }, { 'name': '菏泽市', 'areaList': [ '牡丹区', '定陶区', '曹县', '单县', '成武县', '巨野县', '郓城县', '鄄城县', '东明县' ] } ] }, { 'name': '河南省', 'cityList': [ { 'name': '郑州市', 'areaList': [ '中原区', '二七区', '管城回族区', '金水区', '上街区', '惠济区', '中牟县', '巩义市', '荥阳市', '新密市', '新郑市', '登封市' ] }, { 'name': '开封市', 'areaList': [ '龙亭区', '顺河回族区', '鼓楼区', '禹王台区', '祥符区', '杞县', '通许县', '尉氏县', '兰考县' ] }, { 'name': '洛阳市', 'areaList': [ '老城区', '西工区', '瀍河回族区', '涧西区', '洛龙区', '孟津区', '新安县', '栾川县', '嵩县', '汝阳县', '宜阳县', '洛宁县', '伊川县', '偃师区' ] }, { 'name': '平顶山市', 'areaList': [ '新华区', '卫东区', '石龙区', '湛河区', '宝丰县', '叶县', '鲁山县', '郏县', '舞钢市', '汝州市' ] }, { 'name': '安阳市', 'areaList': [ '文峰区', '北关区', '殷都区', '龙安区', '安阳县', '汤阴县', '滑县', '内黄县', '林州市' ] }, { 'name': '鹤壁市', 'areaList': [ '鹤山区', '山城区', '淇滨区', '浚县', '淇县' ] }, { 'name': '新乡市', 'areaList': [ '红旗区', '卫滨区', '凤泉区', '牧野区', '新乡县', '获嘉县', '原阳县', '延津县', '封丘县', '卫辉市', '辉县市', '长垣市' ] }, { 'name': '焦作市', 'areaList': [ '解放区', '中站区', '马村区', '山阳区', '修武县', '博爱县', '武陟县', '温县', '沁阳市', '孟州市' ] }, { 'name': '濮阳市', 'areaList': [ '华龙区', '清丰县', '南乐县', '范县', '台前县', '濮阳县' ] }, { 'name': '许昌市', 'areaList': [ '魏都区', '建安区', '鄢陵县', '襄城县', '禹州市', '长葛市' ] }, { 'name': '漯河市', 'areaList': [ '源汇区', '郾城区', '召陵区', '舞阳县', '临颍县' ] }, { 'name': '三门峡市', 'areaList': [ '湖滨区', '陕州区', '渑池县', '卢氏县', '义马市', '灵宝市' ] }, { 'name': '南阳市', 'areaList': [ '宛城区', '卧龙区', '南召县', '方城县', '西峡县', '镇平县', '内乡县', '淅川县', '社旗县', '唐河县', '新野县', '桐柏县', '邓州市' ] }, { 'name': '商丘市', 'areaList': [ '梁园区', '睢阳区', '民权县', '睢县', '宁陵县', '柘城县', '虞城县', '夏邑县', '永城市' ] }, { 'name': '信阳市', 'areaList': [ '浉河区', '平桥区', '罗山县', '光山县', '新县', '商城县', '固始县', '潢川县', '淮滨县', '息县' ] }, { 'name': '周口市', 'areaList': [ '川汇区', '淮阳区', '扶沟县', '西华县', '商水县', '沈丘县', '郸城县', '太康县', '鹿邑县', '项城市' ] }, { 'name': '驻马店市', 'areaList': [ '驿城区', '西平县', '上蔡县', '平舆县', '正阳县', '确山县', '泌阳县', '汝南县', '遂平县', '新蔡县' ] } ] }, { 'name': '湖北省', 'cityList': [ { 'name': '武汉市', 'areaList': [ '经济开发区', '江岸区', '江汉区', '硚口区', '汉阳区', '武昌区', '青山区', '洪山区', '东西湖区', '汉南区', '蔡甸区', '江夏区', '黄陂区', '新洲区', '东湖风景区', '东湖新技术开发取', ] }, { 'name': '黄石市', 'areaList': [ '黄石港区', '西塞山区', '下陆区', '铁山区', '阳新县', '大冶市' ] }, { 'name': '十堰市', 'areaList': [ '茅箭区', '张湾区', '郧阳区', '郧西县', '竹山县', '竹溪县', '房县', '丹江口市', '武当山' ] }, { 'name': '宜昌市', 'areaList': [ '西陵区', '伍家岗区', '点军区', '猇亭区', '夷陵区', '远安县', '兴山县', '秭归县', '长阳土家族自治县', '五峰土家族自治县', '宜都市', '当阳市', '枝江市' ] }, { 'name': '襄阳市', 'areaList': [ '襄城区', '樊城区', '襄州区', '南漳县', '谷城县', '保康县', '老河口市', '枣阳市', '宜城市' ] }, { 'name': '鄂州市', 'areaList': [ '梁子湖区', '华容区', '鄂城区' ] }, { 'name': '荆门市', 'areaList': [ '东宝区', '掇刀区', '沙洋县', '钟祥市', '京山市' ] }, { 'name': '孝感市', 'areaList': [ '孝南区', '孝昌县', '大悟县', '云梦县', '应城市', '安陆市', '汉川市' ] }, { 'name': '荆州市', 'areaList': [ '沙市区', '荆州区', '公安县', '江陵县', '石首市', '洪湖市', '松滋市', '监利市' ] }, { 'name': '黄冈市', 'areaList': [ '黄州区', '团风县', '红安县', '罗田县', '英山县', '浠水县', '蕲春县', '黄梅县', '龙感湖', '麻城市', '武穴市' ] }, { 'name': '咸宁市', 'areaList': [ '咸安区', '嘉鱼县', '通城县', '崇阳县', '通山县', '赤壁市' ] }, { 'name': '随州市', 'areaList': [ '曾都区', '随县', '广水市' ] }, { 'name': '恩施土家族苗族自治州', 'areaList': [ '恩施市', '利川市', '建始县', '巴东县', '宣恩县', '咸丰县', '来凤县', '鹤峰县' ] } ] }, { 'name': '湖南省', 'cityList': [ { 'name': '长沙市', 'areaList': [ '芙蓉区', '天心区', '岳麓区', '开福区', '雨花区', '望城区', '长沙县', '浏阳市', '宁乡市' ] }, { 'name': '株洲市', 'areaList': [ '荷塘区', '芦淞区', '石峰区', '天元区', '渌口区', '攸县', '茶陵县', '炎陵县', '醴陵市' ] }, { 'name': '湘潭市', 'areaList': [ '雨湖区', '岳塘区', '湘潭县', '湘乡市', '韶山市' ] }, { 'name': '衡阳市', 'areaList': [ '珠晖区', '雁峰区', '石鼓区', '蒸湘区', '南岳区', '衡阳县', '衡南县', '衡山县', '衡东县', '祁东县', '耒阳市', '常宁市' ] }, { 'name': '邵阳市', 'areaList': [ '双清区', '大祥区', '北塔区', '新邵县', '邵阳县', '隆回县', '洞口县', '绥宁县', '新宁县', '城步苗族自治县', '武冈市', '邵东市' ] }, { 'name': '岳阳市', 'areaList': [ '岳阳楼区', '云溪区', '君山区', '岳阳县', '华容县', '湘阴县', '平江县', '汨罗市', '临湘市' ] }, { 'name': '常德市', 'areaList': [ '武陵区', '鼎城区', '安乡县', '汉寿县', '澧县', '临澧县', '桃源县', '石门县', '津市市' ] }, { 'name': '张家界市', 'areaList': [ '永定区', '武陵源区', '慈利县', '桑植县' ] }, { 'name': '益阳市', 'areaList': [ '资阳区', '赫山区', '南县', '桃江县', '安化县', '沅江市' ] }, { 'name': '郴州市', 'areaList': [ '北湖区', '苏仙区', '桂阳县', '宜章县', '永兴县', '嘉禾县', '临武县', '汝城县', '桂东县', '安仁县', '资兴市' ] }, { 'name': '永州市', 'areaList': [ '零陵区', '冷水滩区', '祁阳县', '东安县', '双牌县', '道县', '江永县', '宁远县', '蓝山县', '新田县', '江华瑶族自治县' ] }, { 'name': '怀化市', 'areaList': [ '鹤城区', '中方县', '沅陵县', '辰溪县', '溆浦县', '会同县', '麻阳苗族自治县', '新晃侗族自治县', '芷江侗族自治县', '靖州苗族侗族自治县', '通道侗族自治县', '洪江市' ] }, { 'name': '娄底市', 'areaList': [ '娄星区', '双峰县', '新化县', '冷水江市', '涟源市' ] }, { 'name': '湘西土家族苗族自治州', 'areaList': [ '吉首市', '泸溪县', '凤凰县', '花垣县', '保靖县', '古丈县', '永顺县', '龙山县' ] } ] }, { 'name': '广东省', 'cityList': [ { 'name': '广州市', 'areaList': [ '荔湾区', '越秀区', '海珠区', '天河区', '白云区', '黄埔区', '番禺区', '花都区', '南沙区', '从化区', '增城区' ] }, { 'name': '韶关市', 'areaList': [ '武江区', '浈江区', '曲江区', '始兴县', '仁化县', '翁源县', '乳源瑶族自治县', '新丰县', '乐昌市', '南雄市' ] }, { 'name': '深圳市', 'areaList': [ '罗湖区', '福田区', '南山区', '宝安区', '龙岗区', '盐田区', '龙华区', '坪山区', '光明区' ] }, { 'name': '珠海市', 'areaList': [ '香洲区', '斗门区', '金湾区' ] }, { 'name': '汕头市', 'areaList': [ '龙湖区', '金平区', '濠江区', '潮阳区', '潮南区', '澄海区', '南澳县' ] }, { 'name': '佛山市', 'areaList': [ '禅城区', '南海区', '顺德区', '三水区', '高明区' ] }, { 'name': '江门市', 'areaList': [ '蓬江区', '江海区', '新会区', '台山市', '开平市', '鹤山市', '恩平市' ] }, { 'name': '湛江市', 'areaList': [ '赤坎区', '霞山区', '坡头区', '麻章区', '遂溪县', '徐闻县', '廉江市', '雷州市', '吴川市' ] }, { 'name': '茂名市', 'areaList': [ '茂南区', '电白区', '高州市', '化州市', '信宜市' ] }, { 'name': '肇庆市', 'areaList': [ '端州区', '鼎湖区', '高要区', '广宁县', '怀集县', '封开县', '德庆县', '四会市' ] }, { 'name': '惠州市', 'areaList': [ '惠城区', '惠阳区', '博罗县', '惠东县', '龙门县' ] }, { 'name': '梅州市', 'areaList': [ '梅江区', '梅县区', '大埔县', '丰顺县', '五华县', '平远县', '蕉岭县', '兴宁市' ] }, { 'name': '汕尾市', 'areaList': [ '城区', '海丰县', '陆河县', '陆丰市' ] }, { 'name': '河源市', 'areaList': [ '源城区', '紫金县', '龙川县', '连平县', '和平县', '东源县' ] }, { 'name': '阳江市', 'areaList': [ '江城区', '阳东区', '阳西县', '阳春市' ] }, { 'name': '清远市', 'areaList': [ '清城区', '清新区', '佛冈县', '阳山县', '连山壮族瑶族自治县', '连南瑶族自治县', '英德市', '连州市' ] }, { 'name': '东莞市', 'areaList': [] }, { 'name': '中山市', 'areaList': [] }, { 'name': '潮州市', 'areaList': [ '湘桥区', '潮安区', '饶平县' ] }, { 'name': '揭阳市', 'areaList': [ '榕城区', '揭东区', '揭西县', '惠来县', '普宁市' ] }, { 'name': '云浮市', 'areaList': [ '云城区', '云安区', '新兴县', '郁南县', '罗定市' ] } ] }, { 'name': '广西壮族自治区', 'cityList': [ { 'name': '南宁市', 'areaList': [ '兴宁区', '青秀区', '江南区', '西乡塘区', '良庆区', '邕宁区', '武鸣区', '隆安县', '马山县', '上林县', '宾阳县', '横州市' ] }, { 'name': '柳州市', 'areaList': [ '城中区', '鱼峰区', '柳南区', '柳北区', '柳江区', '柳城县', '鹿寨县', '融安县', '融水苗族自治县', '三江侗族自治县' ] }, { 'name': '桂林市', 'areaList': [ '秀峰区', '叠彩区', '象山区', '七星区', '雁山区', '临桂区', '阳朔县', '灵川县', '全州县', '兴安县', '永福县', '灌阳县', '龙胜各族自治县', '资源县', '平乐县', '恭城瑶族自治县', '荔浦市' ] }, { 'name': '梧州市', 'areaList': [ '万秀区', '长洲区', '龙圩区', '苍梧县', '藤县', '蒙山县', '岑溪市' ] }, { 'name': '北海市', 'areaList': [ '海城区', '银海区', '铁山港区', '合浦县' ] }, { 'name': '防城港市', 'areaList': [ '港口区', '防城区', '上思县', '东兴市' ] }, { 'name': '钦州市', 'areaList': [ '钦南区', '钦北区', '灵山县', '浦北县' ] }, { 'name': '贵港市', 'areaList': [ '港北区', '港南区', '覃塘区', '平南县', '桂平市' ] }, { 'name': '玉林市', 'areaList': [ '玉州区', '福绵区', '容县', '陆川县', '博白县', '兴业县', '北流市' ] }, { 'name': '百色市', 'areaList': [ '右江区', '田阳区', '田东县', '德保县', '那坡县', '凌云县', '乐业县', '田林县', '西林县', '隆林各族自治县', '靖西市', '平果市' ] }, { 'name': '贺州市', 'areaList': [ '八步区', '平桂区', '昭平县', '钟山县', '富川瑶族自治县' ] }, { 'name': '河池市', 'areaList': [ '金城江区', '宜州区', '南丹县', '天峨县', '凤山县', '东兰县', '罗城仫佬族自治县', '环江毛南族自治县', '巴马瑶族自治县', '都安瑶族自治县', '大化瑶族自治县' ] }, { 'name': '来宾市', 'areaList': [ '兴宾区', '忻城县', '象州县', '武宣县', '金秀瑶族自治县', '合山市' ] }, { 'name': '崇左市', 'areaList': [ '江州区', '扶绥县', '宁明县', '龙州县', '大新县', '天等县', '凭祥市' ] } ] }, { 'name': '海南省', 'cityList': [ { 'name': '海口市', 'areaList': [ '秀英区', '龙华区', '琼山区', '美兰区' ] }, { 'name': '三亚市', 'areaList': [ '海棠区', '吉阳区', '天涯区', '崖州区' ] }, { 'name': '三沙市', 'areaList': [ '西沙区', '南沙区' ] }, { 'name': '儋州市', 'areaList': [] }, { 'name': '洋浦经济开发区', 'areaList': [] }, { 'name': '五指山市', 'areaList': [] }, { 'name': '琼海市', 'areaList': [] }, { 'name': '文昌市', 'areaList': [] }, { 'name': '万宁市', 'areaList': [] }, { 'name': '东方市', 'areaList': [] }, { 'name': '定安县', 'areaList': [] }, { 'name': '屯昌县', 'areaList': [] }, { 'name': '澄迈县', 'areaList': [] }, { 'name': '临高县', 'areaList': [] }, { 'name': '白沙黎族自治县', 'areaList': [] }, { 'name': '昌江黎族自治县', 'areaList': [] }, { 'name': '乐东黎族自治县', 'areaList': [] }, { 'name': '陵水黎族自治县', 'areaList': [] }, { 'name': '保亭黎族苗族自治县', 'areaList': [] }, { 'name': '琼中黎族苗族自治县', 'areaList': [] } ] }, { 'name': '重庆市', 'cityList': [ { 'name': '重庆城区', 'areaList': [ '万州区', '涪陵区', '渝中区', '大渡口区', '江北区', '沙坪坝区', '九龙坡区', '南岸区', '北碚区', '綦江区', '大足区', '渝北区', '巴南区', '黔江区', '长寿区', '江津区', '合川区', '永川区', '南川区', '璧山区', '铜梁区', '潼南区', '荣昌区', '开州区', '梁平区', '武隆区' ] }, { 'name': '重庆郊县', 'areaList': [ '城口县', '丰都县', '垫江县', '忠县', '云阳县', '奉节县', '巫山县', '巫溪县', '石柱土家族自治县', '秀山土家族苗族自治县', '酉阳土家族苗族自治县', '彭水苗族土家族自治县' ] } ] }, { 'name': '四川省', 'cityList': [ { 'name': '成都市', 'areaList': [ '锦江区', '青羊区', '金牛区', '武侯区', '成华区', '龙泉驿区', '青白江区', '新都区', '温江区', '双流区', '郫都区', '金堂县', '大邑县', '蒲江县', '新津区', '都江堰市', '彭州市', '邛崃市', '崇州市', '简阳市' ] }, { 'name': '自贡市', 'areaList': [ '自流井区', '贡井区', '大安区', '沿滩区', '荣县', '富顺县' ] }, { 'name': '攀枝花市', 'areaList': [ '东区', '西区', '仁和区', '米易县', '盐边县' ] }, { 'name': '泸州市', 'areaList': [ '江阳区', '纳溪区', '龙马潭区', '泸县', '合江县', '叙永县', '古蔺县' ] }, { 'name': '德阳市', 'areaList': [ '旌阳区', '罗江区', '中江县', '广汉市', '什邡市', '绵竹市' ] }, { 'name': '绵阳市', 'areaList': [ '涪城区', '游仙区', '安州区', '三台县', '盐亭县', '梓潼县', '北川羌族自治县', '平武县', '江油市' ] }, { 'name': '广元市', 'areaList': [ '利州区', '昭化区', '朝天区', '旺苍县', '青川县', '剑阁县', '苍溪县' ] }, { 'name': '遂宁市', 'areaList': [ '船山区', '安居区', '蓬溪县', '大英县', '射洪市' ] }, { 'name': '内江市', 'areaList': [ '市中区', '东兴区', '威远县', '资中县', '隆昌市' ] }, { 'name': '乐山市', 'areaList': [ '市中区', '沙湾区', '五通桥区', '金口河区', '犍为县', '井研县', '夹江县', '沐川县', '峨边彝族自治县', '马边彝族自治县', '峨眉山市' ] }, { 'name': '南充市', 'areaList': [ '顺庆区', '高坪区', '嘉陵区', '南部县', '营山县', '蓬安县', '仪陇县', '西充县', '阆中市' ] }, { 'name': '眉山市', 'areaList': [ '东坡区', '彭山区', '仁寿县', '洪雅县', '丹棱县', '青神县' ] }, { 'name': '宜宾市', 'areaList': [ '翠屏区', '南溪区', '叙州区', '江安县', '长宁县', '高县', '珙县', '筠连县', '兴文县', '屏山县' ] }, { 'name': '广安市', 'areaList': [ '广安区', '前锋区', '岳池县', '武胜县', '邻水县', '华蓥市' ] }, { 'name': '达州市', 'areaList': [ '通川区', '达川区', '宣汉县', '开江县', '大竹县', '渠县', '万源市' ] }, { 'name': '雅安市', 'areaList': [ '雨城区', '名山区', '荥经县', '汉源县', '石棉县', '天全县', '芦山县', '宝兴县' ] }, { 'name': '巴中市', 'areaList': [ '巴州区', '恩阳区', '通江县', '南江县', '平昌县' ] }, { 'name': '资阳市', 'areaList': [ '雁江区', '安岳县', '乐至县' ] }, { 'name': '阿坝藏族羌族自治州', 'areaList': [ '马尔康市', '汶川县', '理县', '茂县', '松潘县', '九寨沟县', '金川县', '小金县', '黑水县', '壤塘县', '阿坝县', '若尔盖县', '红原县' ] }, { 'name': '甘孜藏族自治州', 'areaList': [ '康定市', '泸定县', '丹巴县', '九龙县', '雅江县', '道孚县', '炉霍县', '甘孜县', '新龙县', '德格县', '白玉县', '石渠县', '色达县', '理塘县', '巴塘县', '乡城县', '稻城县', '得荣县' ] }, { 'name': '凉山彝族自治州', 'areaList': [ '西昌市', '木里藏族自治县', '盐源县', '德昌县', '会理市', '会东县', '宁南县', '普格县', '布拖县', '金阳县', '昭觉县', '喜德县', '冕宁县', '越西县', '甘洛县', '美姑县', '雷波县' ] } ] }, { 'name': '贵州省', 'cityList': [ { 'name': '贵阳市', 'areaList': [ '南明区', '云岩区', '花溪区', '乌当区', '白云区', '观山湖区', '开阳县', '息烽县', '修文县', '清镇市' ] }, { 'name': '六盘水市', 'areaList': [ '钟山区', '六枝特区', '水城区', '盘州市' ] }, { 'name': '遵义市', 'areaList': [ '红花岗区', '汇川区', '播州区', '桐梓县', '绥阳县', '正安县', '道真仡佬族苗族自治县', '务川仡佬族苗族自治县', '凤冈县', '湄潭县', '余庆县', '习水县', '赤水市', '仁怀市' ] }, { 'name': '安顺市', 'areaList': [ '西秀区', '平坝区', '普定县', '镇宁布依族苗族自治县', '关岭布依族苗族自治县', '紫云苗族布依族自治县' ] }, { 'name': '毕节市', 'areaList': [ '七星关区', '大方县', '黔西市', '金沙县', '织金县', '纳雍县', '威宁彝族回族苗族自治县', '赫章县' ] }, { 'name': '铜仁市', 'areaList': [ '碧江区', '万山区', '江口县', '玉屏侗族自治县', '石阡县', '思南县', '印江土家族苗族自治县', '德江县', '沿河土家族自治县', '松桃苗族自治县' ] }, { 'name': '黔西南布依族苗族自治州', 'areaList': [ '兴义市', '兴仁市', '普安县', '晴隆县', '贞丰县', '望谟县', '册亨县', '安龙县' ] }, { 'name': '黔东南苗族侗族自治州', 'areaList': [ '凯里市', '黄平县', '施秉县', '三穗县', '镇远县', '岑巩县', '天柱县', '锦屏县', '剑河县', '台江县', '黎平县', '榕江县', '从江县', '雷山县', '麻江县', '丹寨县' ] }, { 'name': '黔南布依族苗族自治州', 'areaList': [ '都匀市', '福泉市', '荔波县', '贵定县', '瓮安县', '独山县', '平塘县', '罗甸县', '长顺县', '龙里县', '惠水县', '三都水族自治县' ] } ] }, { 'name': '云南省', 'cityList': [ { 'name': '昆明市', 'areaList': [ '五华区', '盘龙区', '官渡区', '西山区', '东川区', '呈贡区', '晋宁区', '富民县', '宜良县', '石林彝族自治县', '嵩明县', '禄劝彝族苗族自治县', '寻甸回族彝族自治县', '安宁市' ] }, { 'name': '曲靖市', 'areaList': [ '麒麟区', '沾益区', '马龙区', '陆良县', '师宗县', '罗平县', '富源县', '会泽县', '宣威市' ] }, { 'name': '玉溪市', 'areaList': [ '红塔区', '江川区', '通海县', '华宁县', '易门县', '峨山彝族自治县', '新平彝族傣族自治县', '元江哈尼族彝族傣族自治县', '澄江市' ] }, { 'name': '保山市', 'areaList': [ '隆阳区', '施甸县', '龙陵县', '昌宁县', '腾冲市' ] }, { 'name': '昭通市', 'areaList': [ '昭阳区', '鲁甸县', '巧家县', '盐津县', '大关县', '永善县', '绥江县', '镇雄县', '彝良县', '威信县', '水富市' ] }, { 'name': '丽江市', 'areaList': [ '古城区', '玉龙纳西族自治县', '永胜县', '华坪县', '宁蒗彝族自治县' ] }, { 'name': '普洱市', 'areaList': [ '思茅区', '宁洱哈尼族彝族自治县', '墨江哈尼族自治县', '景东彝族自治县', '景谷傣族彝族自治县', '镇沅彝族哈尼族拉祜族自治县', '江城哈尼族彝族自治县', '孟连傣族拉祜族佤族自治县', '澜沧拉祜族自治县', '西盟佤族自治县' ] }, { 'name': '临沧市', 'areaList': [ '临翔区', '凤庆县', '云县', '永德县', '镇康县', '双江拉祜族佤族布朗族傣族自治县', '耿马傣族佤族自治县', '沧源佤族自治县' ] }, { 'name': '楚雄彝族自治州', 'areaList': [ '楚雄市', '双柏县', '牟定县', '南华县', '姚安县', '大姚县', '永仁县', '元谋县', '武定县', '禄丰县' ] }, { 'name': '红河哈尼族彝族自治州', 'areaList': [ '个旧市', '开远市', '蒙自市', '弥勒市', '屏边苗族自治县', '建水县', '石屏县', '泸西县', '元阳县', '红河县', '金平苗族瑶族傣族自治县', '绿春县', '河口瑶族自治县' ] }, { 'name': '文山壮族苗族自治州', 'areaList': [ '文山市', '砚山县', '西畴县', '麻栗坡县', '马关县', '丘北县', '广南县', '富宁县' ] }, { 'name': '西双版纳傣族自治州', 'areaList': [ '景洪市', '勐海县', '勐腊县' ] }, { 'name': '大理白族自治州', 'areaList': [ '大理市', '漾濞彝族自治县', '祥云县', '宾川县', '弥渡县', '南涧彝族自治县', '巍山彝族回族自治县', '永平县', '云龙县', '洱源县', '剑川县', '鹤庆县' ] }, { 'name': '德宏傣族景颇族自治州', 'areaList': [ '瑞丽市', '芒市', '梁河县', '盈江县', '陇川县' ] }, { 'name': '怒江傈僳族自治州', 'areaList': [ '泸水市', '福贡县', '贡山独龙族怒族自治县', '兰坪白族普米族自治县' ] }, { 'name': '迪庆藏族自治州', 'areaList': [ '香格里拉市', '德钦县', '维西傈僳族自治县' ] } ] }, { 'name': '西藏自治区', 'cityList': [ { 'name': '拉萨市', 'areaList': [ '城关区', '堆龙德庆区', '达孜区', '林周县', '当雄县', '尼木县', '曲水县', '墨竹工卡县' ] }, { 'name': '日喀则市', 'areaList': [ '桑珠孜区', '南木林县', '江孜县', '定日县', '萨迦县', '拉孜县', '昂仁县', '谢通门县', '白朗县', '仁布县', '康马县', '定结县', '仲巴县', '亚东县', '吉隆县', '聂拉木县', '萨嘎县', '岗巴县' ] }, { 'name': '昌都市', 'areaList': [ '卡若区', '江达县', '贡觉县', '类乌齐县', '丁青县', '察雅县', '八宿县', '左贡县', '芒康县', '洛隆县', '边坝县' ] }, { 'name': '林芝市', 'areaList': [ '巴宜区', '工布江达县', '米林县', '墨脱县', '波密县', '察隅县', '朗县' ] }, { 'name': '山南市', 'areaList': [ '乃东区', '扎囊县', '贡嘎县', '桑日县', '琼结县', '曲松县', '措美县', '洛扎县', '加查县', '隆子县', '错那县', '浪卡子县' ] }, { 'name': '那曲市', 'areaList': [ '色尼区', '嘉黎县', '比如县', '聂荣县', '安多县', '申扎县', '索县', '班戈县', '巴青县', '尼玛县', '双湖县' ] }, { 'name': '阿里地区', 'areaList': [ '普兰县', '札达县', '噶尔县', '日土县', '革吉县', '改则县', '措勤县' ] } ] }, { 'name': '陕西省', 'cityList': [ { 'name': '西安市', 'areaList': [ '新城区', '碑林区', '莲湖区', '灞桥区', '未央区', '雁塔区', '阎良区', '临潼区', '长安区', '高陵区', '鄠邑区', '蓝田县', '周至县' ] }, { 'name': '铜川市', 'areaList': [ '王益区', '印台区', '耀州区', '宜君县' ] }, { 'name': '宝鸡市', 'areaList': [ '渭滨区', '金台区', '陈仓区', '凤翔县', '岐山县', '扶风县', '眉县', '陇县', '千阳县', '麟游县', '凤县', '太白县' ] }, { 'name': '咸阳市', 'areaList': [ '秦都区', '杨陵区', '渭城区', '三原县', '泾阳县', '乾县', '礼泉县', '永寿县', '长武县', '旬邑县', '淳化县', '武功县', '兴平市', '彬州市' ] }, { 'name': '渭南市', 'areaList': [ '临渭区', '华州区', '潼关县', '大荔县', '合阳县', '澄城县', '蒲城县', '白水县', '富平县', '韩城市', '华阴市' ] }, { 'name': '延安市', 'areaList': [ '宝塔区', '安塞区', '延长县', '延川县', '志丹县', '吴起县', '甘泉县', '富县', '洛川县', '宜川县', '黄龙县', '黄陵县', '子长市' ] }, { 'name': '汉中市', 'areaList': [ '汉台区', '南郑区', '城固县', '洋县', '西乡县', '勉县', '宁强县', '略阳县', '镇巴县', '留坝县', '佛坪县' ] }, { 'name': '榆林市', 'areaList': [ '榆阳区', '横山区', '府谷县', '靖边县', '定边县', '绥德县', '米脂县', '佳县', '吴堡县', '清涧县', '子洲县', '神木市' ] }, { 'name': '安康市', 'areaList': [ '汉滨区', '汉阴县', '石泉县', '宁陕县', '紫阳县', '岚皋县', '平利县', '镇坪县', '旬阳市', '白河县' ] }, { 'name': '商洛市', 'areaList': [ '商州区', '洛南县', '丹凤县', '商南县', '山阳县', '镇安县', '柞水县' ] } ] }, { 'name': '甘肃省', 'cityList': [ { 'name': '兰州市', 'areaList': [ '城关区', '七里河区', '西固区', '安宁区', '红古区', '永登县', '皋兰县', '榆中县' ] }, { 'name': '嘉峪关市', 'areaList': [] }, { 'name': '金昌市', 'areaList': [ '金川区', '永昌县' ] }, { 'name': '白银市', 'areaList': [ '白银区', '平川区', '靖远县', '会宁县', '景泰县' ] }, { 'name': '天水市', 'areaList': [ '秦州区', '麦积区', '清水县', '秦安县', '甘谷县', '武山县', '张家川回族自治县' ] }, { 'name': '武威市', 'areaList': [ '凉州区', '民勤县', '古浪县', '天祝藏族自治县' ] }, { 'name': '张掖市', 'areaList': [ '甘州区', '肃南裕固族自治县', '民乐县', '临泽县', '高台县', '山丹县' ] }, { 'name': '平凉市', 'areaList': [ '崆峒区', '泾川县', '灵台县', '崇信县', '庄浪县', '静宁县', '华亭市' ] }, { 'name': '酒泉市', 'areaList': [ '肃州区', '金塔县', '瓜州县', '肃北蒙古族自治县', '阿克塞哈萨克族自治县', '玉门市', '敦煌市' ] }, { 'name': '庆阳市', 'areaList': [ '西峰区', '庆城县', '环县', '华池县', '合水县', '正宁县', '宁县', '镇原县' ] }, { 'name': '定西市', 'areaList': [ '安定区', '通渭县', '陇西县', '渭源县', '临洮县', '漳县', '岷县' ] }, { 'name': '陇南市', 'areaList': [ '武都区', '成县', '文县', '宕昌县', '康县', '西和县', '礼县', '徽县', '两当县' ] }, { 'name': '临夏回族自治州', 'areaList': [ '临夏市', '临夏县', '康乐县', '永靖县', '广河县', '和政县', '东乡族自治县', '积石山保安族东乡族撒拉族自治县' ] }, { 'name': '甘南藏族自治州', 'areaList': [ '合作市', '临潭县', '卓尼县', '舟曲县', '迭部县', '玛曲县', '碌曲县', '夏河县' ] } ] }, { 'name': '青海省', 'cityList': [ { 'name': '西宁市', 'areaList': [ '城东区', '城中区', '城西区', '城北区', '湟中区', '大通回族土族自治县', '湟源县' ] }, { 'name': '海东市', 'areaList': [ '乐都区', '平安区', '民和回族土族自治县', '互助土族自治县', '化隆回族自治县', '循化撒拉族自治县' ] }, { 'name': '海北藏族自治州', 'areaList': [ '门源回族自治县', '祁连县', '海晏县', '刚察县' ] }, { 'name': '黄南藏族自治州', 'areaList': [ '同仁县', '尖扎县', '泽库县', '河南蒙古族自治县' ] }, { 'name': '海南藏族自治州', 'areaList': [ '共和县', '同德县', '贵德县', '兴海县', '贵南县' ] }, { 'name': '果洛藏族自治州', 'areaList': [ '玛沁县', '班玛县', '甘德县', '达日县', '久治县', '玛多县' ] }, { 'name': '玉树藏族自治州', 'areaList': [ '玉树市', '杂多县', '称多县', '治多县', '囊谦县', '曲麻莱县' ] }, { 'name': '海西蒙古族藏族自治州', 'areaList': [ '格尔木市', '德令哈市', '茫崖市', '乌兰县', '都兰县', '天峻县', '海西蒙古族藏族自治州直辖' ] } ] }, { 'name': '宁夏回族自治区', 'cityList': [ { 'name': '银川市', 'areaList': [ '兴庆区', '西夏区', '金凤区', '永宁县', '贺兰县', '灵武市' ] }, { 'name': '石嘴山市', 'areaList': [ '大武口区', '惠农区', '平罗县' ] }, { 'name': '吴忠市', 'areaList': [ '利通区', '红寺堡区', '盐池县', '同心县', '青铜峡市' ] }, { 'name': '固原市', 'areaList': [ '原州区', '西吉县', '隆德县', '泾源县', '彭阳县' ] }, { 'name': '中卫市', 'areaList': [ '沙坡头区', '中宁县', '海原县' ] } ] }, { 'name': '新疆维吾尔自治区', 'cityList': [ { 'name': '乌鲁木齐市', 'areaList': [ '天山区', '沙依巴克区', '新市区', '水磨沟区', '头屯河区', '达坂城区', '米东区', '乌鲁木齐县' ] }, { 'name': '克拉玛依市', 'areaList': [ '独山子区', '克拉玛依区', '白碱滩区', '乌尔禾区' ] }, { 'name': '吐鲁番市', 'areaList': [ '高昌区', '鄯善县', '托克逊县' ] }, { 'name': '哈密市', 'areaList': [ '伊州区', '巴里坤哈萨克自治县', '伊吾县' ] }, { 'name': '昌吉回族自治州', 'areaList': [ '昌吉市', '阜康市', '呼图壁县', '玛纳斯县', '奇台县', '吉木萨尔县', '木垒哈萨克自治县' ] }, { 'name': '博尔塔拉蒙古自治州', 'areaList': [ '博乐市', '阿拉山口市', '精河县', '温泉县' ] }, { 'name': '巴音郭楞蒙古自治州', 'areaList': [ '库尔勒市', '轮台县', '尉犁县', '若羌县', '且末县', '焉耆回族自治县', '和静县', '和硕县', '博湖县' ] }, { 'name': '阿克苏地区', 'areaList': [ '阿克苏市', '库车市', '温宿县', '沙雅县', '新和县', '拜城县', '乌什县', '阿瓦提县', '柯坪县' ] }, { 'name': '克孜勒苏柯尔克孜自治州', 'areaList': [ '阿图什市', '阿克陶县', '阿合奇县', '乌恰县' ] }, { 'name': '喀什地区', 'areaList': [ '喀什市', '疏附县', '疏勒县', '英吉沙县', '泽普县', '莎车县', '叶城县', '麦盖提县', '岳普湖县', '伽师县', '巴楚县', '塔什库尔干塔吉克自治县' ] }, { 'name': '和田地区', 'areaList': [ '和田市', '和田县', '墨玉县', '皮山县', '洛浦县', '策勒县', '于田县', '民丰县' ] }, { 'name': '伊犁哈萨克自治州', 'areaList': [ '伊宁市', '奎屯市', '霍尔果斯市', '伊宁县', '察布查尔锡伯自治县', '霍城县', '巩留县', '新源县', '昭苏县', '特克斯县', '尼勒克县' ] }, { 'name': '塔城地区', 'areaList': [ '塔城市', '乌苏市', '额敏县', '沙湾县', '托里县', '裕民县', '和布克赛尔蒙古自治县' ] }, { 'name': '阿勒泰地区', 'areaList': [ '阿勒泰市', '布尔津县', '富蕴县', '福海县', '哈巴河县', '青河县', '吉木乃县' ] }, { 'name': '石河子市', 'areaList': [] }, { 'name': '阿拉尔市', 'areaList': [] }, { 'name': '图木舒克市', 'areaList': [] }, { 'name': '五家渠市', 'areaList': [] }, { 'name': '北屯市', 'areaList': [] }, { 'name': '铁门关市', 'areaList': [] }, { 'name': '双河市', 'areaList': [] }, { 'name': '可克达拉市', 'areaList': [] }, { 'name': '昆玉市', 'areaList': [] }, { 'name': '胡杨河市', 'areaList': [] } ] }, { 'name': '台湾省', 'cityList': [] }, { 'name': '香港特别行政区', 'cityList': [ { 'name': '中西区', 'areaList': [] }, { 'name': '湾仔区', 'areaList': [] }, { 'name': '东区', 'areaList': [] }, { 'name': '南区', 'areaList': [] }, { 'name': '油尖旺区', 'areaList': [] }, { 'name': '深水埗区', 'areaList': [] }, { 'name': '九龙城区', 'areaList': [] }, { 'name': '黄大仙区', 'areaList': [] }, { 'name': '观塘区', 'areaList': [] }, { 'name': '荃湾区', 'areaList': [] }, { 'name': '屯门区', 'areaList': [] }, { 'name': '元朗区', 'areaList': [] }, { 'name': '北区', 'areaList': [] }, { 'name': '大埔区', 'areaList': [] }, { 'name': '西贡区', 'areaList': [] }, { 'name': '沙田区', 'areaList': [] }, { 'name': '葵青区', 'areaList': [] }, { 'name': '离岛区', 'areaList': [] } ] }, { 'name': '澳门特别行政区', 'cityList': [ { 'name': '花地玛堂区', 'areaList': [] }, { 'name': '花王堂区', 'areaList': [] }, { 'name': '望德堂区', 'areaList': [] }, { 'name': '大堂区', 'areaList': [] }, { 'name': '风顺堂区', 'areaList': [] }, { 'name': '嘉模堂区', 'areaList': [] }, { 'name': '路凼填海区', 'areaList': [] }, { 'name': '圣方济各堂', 'areaList': [] } ] } ]";
	/**
	 * 根据数据生成excel流（xls类型文件）
	 *@author wangtao
	 *Apr 1, 2014
	 *
	 * @param inputStream
	 * @param fields
	 * @param dataset
	 * @param out
	 * @throws Exception
	 */
	public void exportExcel(InputStream inputStream , String[] fields,
							Collection<T> dataset, OutputStream out) throws Exception
	{

		// 声明一个工作薄
		POIFSFileSystem fs = new POIFSFileSystem(inputStream);
		HSSFWorkbook workbook = new HSSFWorkbook(fs);
		// HSSFWorkbook workbook = new HSSFWorkbook( );

		// 取第一个表格
		HSSFSheet sheet = workbook.getSheetAt(0);

		// 遍历集合数据，产生数据行
		Iterator<T> it = dataset.iterator();
		int index = sheet.getPhysicalNumberOfRows();
		HSSFRow row = null;
		int rowNum =1;  //序号
		while (it.hasNext())
		{
			row  = sheet.createRow(index);
			T t = (T) it.next();
			//序号
			row.createCell(0).setCellValue(rowNum++);

			// 利用反射，根据javabean属性的先后顺序，动态调用getXxx()方法得到属性值
			for (int i = 0; i < fields.length; i++)
			{
				HSSFCell cell = row.createCell(i+1);
				String fieldName = fields[i];
				//反射取值
				Object value =  getMethodValue(t, fieldName);
				// 判断值的类型后进行强制类型转换
				Object textValue = getValue(value);

				setCellValue(cell , textValue);
			}
			index++;
		}


		workbook.write(out);

	}

	/**
	 * 根据数据生成excel流（xlsx类型文件）
	 *@author wangtao
	 *Apr 1, 2014
	 *
	 * @param templet
	 * @param fields
	 * @param dataset
	 * @param out
	 * @throws Exception
	 */
	public void exportExcelToXlsx( String templet , String[] fields,
								   Collection<T> dataset, OutputStream out) throws Exception
	{
		// 声明一个工作薄
		XSSFWorkbook workbook = new XSSFWorkbook(this.getClass().getClassLoader().getResourceAsStream(templet));
		// 取第一个表格
		XSSFSheet sheet = workbook.getSheetAt(0);

		// 遍历集合数据，产生数据行
		Iterator<T> it = dataset.iterator();
		int index = sheet.getPhysicalNumberOfRows();
		XSSFRow row = null;
		int rowNum =1;  //序号
		while (it.hasNext())
		{

			row  = sheet.createRow(index);
			T t = (T) it.next();
			//序号
			row.createCell(0).setCellValue(rowNum++);

			// 利用反射，根据javabean属性的先后顺序，动态调用getXxx()方法得到属性值
			for (int i = 0; i < fields.length; i++)
			{
				XSSFCell cell = row.createCell(i+1);
				String fieldName = fields[i];
				//反射取值
				Object value =  getMethodValue(t, fieldName);
				// 判断值的类型后进行强制类型转换
				Object textValue = getValue(value);
				//列赋值
				setCellValue(cell , textValue);

			}
			index++;
		}
		workbook.write(out);
	}


	/**
	 * 带底部的数据  根据数据生成excel流（xls类型文件）
	 * @param fileTempletPath 模板文件路径
	 * @param fields
	 * @param dataset
	 * @param startRow 开始的行号，默认是按 实际物理行号后迭代
	 * @param arrFootRow 底部的号数据
	 * @param out
	 * @throws Exception
	 */
	public void exportAndFootExcel(String fileTempletPath , String[] fields,
								   Collection<T> dataset, Integer startRow, List<FootRow> arrFootRow,  OutputStream out) throws Exception
	{

		// 声明一个工作薄
		try (POIFSFileSystem fs = new POIFSFileSystem( new FileInputStream( fileTempletPath  ) );
			 HSSFWorkbook workbook = new HSSFWorkbook(fs);
		) {


			// HSSFWorkbook workbook = new HSSFWorkbook( );

			// 取第一个表格
			HSSFSheet sheet = workbook.getSheetAt(0);

			int index;

			// 遍历集合数据，产生数据行
			Iterator<T> it = dataset.iterator();
			if (startRow != null) {
				index = startRow.intValue();
			} else {
				index = sheet.getPhysicalNumberOfRows();
			}

			HSSFRow row = null;
			int rowNum = 1;  //序号
			while (it.hasNext()) {
				// sheet.shiftRows(index, sheet.getLastRowNum(), 1,true,false); //吧最后一行易
				insertRow(sheet, index, 1);

				row = sheet.createRow(index);
				T t = (T) it.next();
				//序号
				row.createCell(0).setCellValue(rowNum++);

				// 利用反射，根据javabean属性的先后顺序，动态调用getXxx()方法得到属性值
				for (int i = 0; i < fields.length; i++) {
					HSSFCell cell = row.createCell(i + 1);
					String fieldName = fields[i];
					//反射取值
					Object value = getMethodValue(t, fieldName);
					// 判断值的类型后进行强制类型转换
					Object textValue = getValue(value);

					setCellValue(cell, textValue);
				}
				index++;
			}

			//底部 添加
			if (arrFootRow != null && arrFootRow.size() > 0) {
				for (FootRow fRow : arrFootRow) {

					if (fRow.getRowNum() != null) index = fRow.getRowNum();

					row = sheet.getRow(index);
					if (row == null) {
						insertRow(sheet, index, 1);
						row = sheet.createRow(index);
					}
					//列
					List<FootCell> arrFootCell = fRow.getArrFootCell();
					if (arrFootCell != null && arrFootCell.size() > 0) {
						for (FootCell tCell : arrFootCell) {
							int cellNum = tCell.getCellNum();
							Cell cell = row.getCell(cellNum);
							if (cell == null) {
								cell = row.createCell(cellNum);
							}
							setCellValue(cell, tCell.getCellVal());
						}
					}


				}

			}
			workbook.write(out);
		}

	}

	/////////////////////////////////////////

	/**
	 * 插入行
	 * @param sheet
	 * @param starRow
	 * @param rows
	 */
	public  void insertRow(HSSFSheet sheet, int starRow,int rows) {

		sheet.shiftRows(starRow + 1, sheet.getLastRowNum(), rows,true,false);

		starRow = starRow - 1;

		for (int i = 0; i < rows; i++) {

			HSSFRow sourceRow = null;
			HSSFRow targetRow = null;
			HSSFCell sourceCell = null;
			HSSFCell targetCell = null;
			int m;

			starRow = starRow + 1;
			sourceRow = sheet.getRow(starRow);
			targetRow = sheet.createRow(starRow + 1);
			targetRow.setHeight(sourceRow.getHeight());

			for (m = sourceRow.getFirstCellNum(); m < sourceRow.getLastCellNum(); m++) {

				sourceCell = sourceRow.getCell(m);
				targetCell = targetRow.createCell(m);

				//   targetCell.setEncoding(sourceCell.getEncoding());
				targetCell.setCellStyle(sourceCell.getCellStyle());
				targetCell.setCellType(sourceCell.getCellType());
				targetCell.setCellValue(sourceCell.getStringCellValue()); //

			}
		}

	}

	/**
	 * 反射 取值
	 *@author wangtao
	 *Apr 1, 2014
	 *
	 * @param obj
	 * @param fieldName
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings({ "rawtypes", "unchecked" })
	protected   Object getMethodValue(Object obj,String fieldName) throws Exception{

		String getMethodName = "get"
				+ fieldName.substring(0, 1).toUpperCase()
				+ fieldName.substring(1);
		Class tCls = obj.getClass();
		Method getMethod = tCls.getMethod(getMethodName);
		return getMethod.invoke(obj);
	}


	protected Object getValue(Object value){
		Object textValue = "";
		if(value != null){
			if (value instanceof Boolean)
			{
				boolean bValue = (Boolean) value;
				textValue = "是";
				if (!bValue)
				{
					textValue = "否";
				}
			}
			else if (value instanceof Date)
			{
				Date date = (Date) value;
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				textValue = sdf.format(date);
			}
			else if (value instanceof String)
			{
				String val =(String) value;
				textValue = StringUtils.isBlank(val) || "null".equalsIgnoreCase(val) ? "" : val ;
			}
			else
			{
				// 其它数据类型都当作字符串简单处理
				textValue = value ;
			}
		}
		return textValue;
	}

	/**
	 * XSSFCell
	 * @date 2014-8-14 下午3:58:33
	 * @param cell
	 * @param value
	 */
	protected void   setCellValue(Cell cell , Object value){
		if(value != null){
			if(value instanceof Integer){
				cell.setCellValue((Integer)value);
			}else if (value instanceof Float) {
				Float floatValue = (Float) value;
				cell.setCellValue(floatValue);
			} else if (value instanceof Double) {
				Double doubleValue = (Double) value;
				cell.setCellValue(doubleValue);
			} else if (value instanceof Long) {
				Long longValue = (Long) value;
				cell.setCellValue(longValue);
			}else if(value instanceof BigDecimal){
				cell.setCellValue(((BigDecimal) value).doubleValue());
			}
			else{
				cell.setCellValue(value.toString());
			}
		}

	}
	/**
	 * HSSFCell
	 * @date 2014-8-14 下午3:58:54
	 * @param cell
	 * @param value
	 */
	protected void   setCellValue(HSSFCell cell , Object value){
		if(value != null){
			if(value instanceof Integer){
				cell.setCellValue((Integer)value);
			}else if (value instanceof Float) {
				Float floatValue = (Float) value;
				cell.setCellValue(floatValue);
			} else if (value instanceof Double) {
				Double doubleValue = (Double) value;
				cell.setCellValue(doubleValue);
			} else if (value instanceof Long) {
				Long longValue = (Long) value;
				cell.setCellValue(longValue);
			}
			else if(value instanceof BigDecimal){
				cell.setCellValue(((BigDecimal) value).doubleValue());
			}
			else{
				cell.setCellValue(value.toString());
			}
		}

	}

	/**
	 * @ClassName: StoreReportBean
	 * @Description: 按字段导出Excel
	 * @author zhangting
	 * @date 2014年6月9日
	 *
	 */
	public void exportExcelByFields(String fileTempletPath , String[] fields,
									Collection<T> dataset, OutputStream out, String dateFormatter) throws Exception
	{

		try (// 声明一个工作薄
				POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(fileTempletPath));
				HSSFWorkbook workbook = new HSSFWorkbook(fs)){
			// 取第一个表格
			HSSFSheet sheet = workbook.getSheetAt(0);

			// 遍历集合数据，产生数据行
			Iterator<T> it = dataset.iterator();
			int index = sheet.getPhysicalNumberOfRows();
			HSSFRow row = null;
			int rowNum = 1;  //序号
			while (it.hasNext()) {
				row = sheet.createRow(index);
				T t = (T) it.next();
				//序号
				row.createCell(0).setCellValue(rowNum++);

				// 利用反射，根据javabean属性的先后顺序，动态调用getXxx()方法得到属性值
				for (int i = 0; i < fields.length; i++) {
					HSSFCell cell = row.createCell(i + 1);
					String fieldName = fields[i];
					//反射取值
					Object value = getMethodValues(t, fieldName);
					// 判断值的类型后进行强制类型转换
					Object textValue = getValue(value, dateFormatter);
					setCellValue(cell, textValue);
				}
				index++;
			}


			workbook.write(out);
		}
	}
	/**
	 * 反射 取值
	 * 如"name, code" 获得值"zhangshan00111"
	 * @author zhangting
	 * @param o
	 * @param proNames
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings("rawtypes")
	public Object getMethodValues(Object o,String proNames) throws Exception{
		//Method m = o.getClass().getDeclaredMethod("set"+fieldName,new Class[]{String.class});      //没有setName这样会报错
		StringBuilder retValue = new StringBuilder();
		String[] fieldNames = proNames.split(",");
		for(String fieldName : fieldNames){
			if(fieldName.length() == 1){
				fieldName = fieldName.toUpperCase();
			}else if(fieldName.length() > 1){
				fieldName = fieldName.substring(0,1).toUpperCase() + fieldName.substring(1,fieldName.length());
			}
			Object tempValue = fieldName;
			Method[] ms = o.getClass().getDeclaredMethods();
			if(null != ms && ms.length>0){
				for(Method m : ms){
					if(m.getName().equals("get"+fieldName)){
						Class[] c = m.getParameterTypes();
						if(c.length == 0){
							tempValue = m.invoke(o);
							break;
						}
					}
				}
			}
			if (tempValue instanceof Date) {
				return tempValue;
			}else if(fieldNames.length == 1 && tempValue instanceof BigDecimal){
				return tempValue;
			}else retValue.append(tempValue);
		}
		return retValue.toString().replaceAll("null", "");
	}
	protected Object getValue(Object value, String dateFormatter){
		Object textValue = "";
		if(value != null){
			if (value instanceof Boolean)
			{
				boolean bValue = (Boolean) value;
				textValue = "是";
				if (!bValue)
				{
					textValue = "否";
				}
			}
			else if (value instanceof Date)
			{
				Date date = (Date) value;
				if(StringUtils.isNotEmpty(dateFormatter)){
					SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
					textValue = sdf.format(date);
				}else{
					SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
					textValue = sdf.format(date);
				}
			}
			else if (value instanceof String)
			{
				String val =(String) value;
				textValue = StringUtils.isBlank(val) || "null".equalsIgnoreCase(val) ? "" : val ;
			}
			else if(value instanceof BigDecimal){
				textValue = value;
			}
			else
			{
				// 其它数据类型都当作字符串简单处理
				textValue = value ;
			}
		}
		return textValue;
	}


	/**
	 * 生成模板excel，根据数据生成excel流（xls类型文件）
	 * @param fileTempletPath 模板文件路径
	 * @param fields
	 * @param startRow 开始的行号，默认是按 实际物理行号后迭代
	 * @param out
	 * @throws Exception
	 */
	public void exportAndHeadExcel(String fileTempletPath , List<String> fields,
								   Integer startRow, FileOutputStream out) throws Exception
	{
		try (// 声明一个工作薄
				HSSFWorkbook workbook = new HSSFWorkbook()) {
			// 取第一个表格
			HSSFSheet sheet = workbook.createSheet("sheet1");


			HSSFRow row = null;
			int rowNum = 1;  //序号
			row = sheet.createRow(startRow);
			for (int i = 0; i < fields.size(); i++) {
				HSSFCell cell = row.createCell(i);
				// 判断值的类型后进行强制类型转换
				Object textValue = fields.get(i);

				setCellValue(cell, textValue);
			}
			workbook.write(out);
		}

	}

	/**
	 * 生成模板excel，根据数据生成excel流（xls类型文件）
	 *
	 * @param fileTempletPath 模板文件路径
	 * @param fields
	 * @param startRow        开始的行号，默认是按 实际物理行号后迭代
	 * @throws Exception
	 */
	public Workbook exportAndHeadExcel(String fileTempletPath, List<String> fields, List<String> modelValues, List<String> contents, List<String> explains, List<String> converts, List<Long> requireds,
									   Integer startRow, Long type) throws Exception {
		File file = new File(fileTempletPath);
		try (// 声明一个工作薄
			 HSSFWorkbook workbook = new HSSFWorkbook()){
			// 取第一个表格
			HSSFSheet sheet = workbook.createSheet("sheet1");
			HSSFRow row = null;
			//省开始列
			List<Integer> firstCols = new ArrayList<>();
			row = sheet.createRow(startRow);
			for (int i = 0; i < fields.size(); i++) {
				HSSFCell cell = row.createCell(i);
				String fieldName = fields.get(i);
				if ("发货省".equals(fieldName) || "收货省".equals(fieldName) || "省".equals(fieldName)) {
					firstCols.add(i);
				}
				// 判断值的类型后进行强制类型转换
				Object textValue = fields.get(i);

				setCellValue(cell, textValue);
			}

			//设置为自动换行
			HSSFCellStyle cellStyle = workbook.createCellStyle();
			cellStyle.setWrapText(true);
			//设置为文字居中
			cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
			//设置背景色
			cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
			cellStyle.setFillForegroundColor(HSSFColor.HSSFColorPredefined.YELLOW.getIndex());
			//列说明
			HSSFRow rowTwo = sheet.createRow(startRow + 1);
			for (int i = 0; i < explains.size(); i++) {
				HSSFCell cell = rowTwo.createCell(i);
				cell.setCellStyle(cellStyle);
				Object textValue = explains.get(i);
				if (0 == Long.compare(requireds.get(i), 0L)) {
					textValue = explains.get(i);
					//扩展字段没有对应的表xn_m_xls_field_cfg数据，所以为空，默认显示必填
					if (textValue == "") {
						textValue = "非必填";
					}
				} else {
					textValue = explains.get(i);
					//扩展字段没有对应的表xn_m_xls_field_cfg数据，所以为空，默认显示必填
					if (textValue == "") {
						textValue = "必填";
					}
				}
				setCellValue(cell, textValue);
				rowTwo.setHeightInPoints(48);
			}

			//模板数据
			HSSFRow rowThird = null;
			rowThird = sheet.createRow(startRow + 2);
			for (int i = 0; i < modelValues.size(); i++) {
				HSSFCell cell = rowThird.createCell(i);
				cell.setCellStyle(cellStyle);
				// 判断值的类型后进行强制类型转换
				Object textValue = modelValues.get(i);
				//类型枚举限制
				if (StringUtils.isNotBlank(contents.get(i))) {
					HSSFDataValidation hssfDataValidation = ExportExcel.setValidate(startRow + 3, i, contents.get(i).split(",|，"), workbook);
					sheet.addValidationData(hssfDataValidation);
				}
				//时间类型格式限制
				if (Objects.equals(DATE_CONVERT_CLASS, converts.get(i))) {
					CellStyle dateStyle = workbook.createCellStyle();
					HSSFDataFormat format = workbook.createDataFormat();
					dateStyle.setDataFormat(format.getFormat("yyyy-mm-dd hh:mm:ss"));
					//colNum 第几列
					sheet.setDefaultColumnStyle(i, dateStyle);
				}
				setCellValue(cell, textValue);
			}

			int o = 0;
			if (type.equals(1L) || type.equals(1133000L)) {
				o = 1;
				//多货物导入
				HSSFRow rowOther = null;
				rowOther = sheet.createRow(startRow + 3);

				for (int i = 0; i < modelValues.size(); i++) {
					if (i == 0) {
						HSSFCell cell00 = rowOther.createCell(0);
						cell00.setCellStyle(cellStyle);
						Object textValue00 = "20180323026001";
						setCellValue(cell00, textValue00);
					} else if (i == 23) {
						HSSFCell cell23 = rowOther.createCell(23);
						cell23.setCellStyle(cellStyle);
						Object textValue23 = "货物B";
						setCellValue(cell23, textValue23);
					} else if (i == 25) {
						HSSFCell cell25 = rowOther.createCell(25);
						cell25.setCellStyle(cellStyle);
						Object textValue25 = "20";
						setCellValue(cell25, textValue25);
					} else if (i == 28) {
						HSSFCell cell28 = rowOther.createCell(28);
						cell28.setCellStyle(cellStyle);
						Object textValue28 = "吨";
						setCellValue(cell28, textValue28);
					} else if (i == 29) {
						HSSFCell cell29 = rowOther.createCell(29);
						cell29.setCellStyle(cellStyle);
						Object textValue29 = "m³";
						setCellValue(cell29, textValue29);
					} else if (i == 30) {
						HSSFCell cell30 = rowOther.createCell(30);
						cell30.setCellStyle(cellStyle);
						Object textValue30 = "件";
						setCellValue(cell30, textValue30);
					} else {
						HSSFCell cell = rowOther.createCell(i);
						cell.setCellStyle(cellStyle);
						Object textValue = "";
						setCellValue(cell, textValue);
					}
				}
			}

			//提示的展示
			HSSFRow rowFour = sheet.createRow(startRow + 3 + o);
			for (int i = 0; i < modelValues.size(); i++) {
				if (i == 0) {
					HSSFCell cell = rowFour.createCell(i);
					cell.setCellStyle(cellStyle);
					Object textValue = null;
					if (o == 1) {
						textValue = "请在输入真实的业务数据后，删除标注为黄色的四行记录（包括本行的说明），然后再上传本Excel文件";
					} else {
						textValue = "请在输入真实的业务数据后，删除标注为黄色的三行记录（包括本行的说明），然后再上传本Excel文件";
					}
					setCellValue(cell, textValue);
				} else {
					HSSFCell cell = rowFour.createCell(i);
					cell.setCellStyle(cellStyle);
					Object textValue = "";
					setCellValue(cell, textValue);
				}
			}
			sheet.setColumnWidth(0, 16 * 256); //调整第一列宽度
			sheet.addMergedRegion(new CellRangeAddress(3 + o, 3 + o, 0, 3 + o));//第四行 合并4列
			if (firstCols.size() > 0) {
				//创建省市隐藏sheet页
				HSSFSheet hideSheet = workbook.createSheet("site");
				workbook.setSheetHidden(workbook.getSheetIndex(hideSheet), true);
				//模板数据从第5行开始，所以start = 4
				make(workbook, sheet, hideSheet, 4 + o, 4 + o, firstCols);
			}
			return workbook;
		}
	}

	/**
	 * excel下拉框生成
	 * @param firstRow
	 * @param firstCol
	 * @param explicitListValues
	 * @return
	 */
	public static HSSFDataValidation setValidate(int firstRow, int firstCol,String[] explicitListValues, HSSFWorkbook workbook) {
		//如果筛选框内容总数大于255个，采用新模式限制
		if (explicitListValues != null && JSON.toJSONString(explicitListValues).length() >= 255) {
			String[] dataArray = explicitListValues;
			HSSFSheet hidden = workbook.createSheet("hidden"+firstCol);
			HSSFCell cell = null;
			for (int i = 0, length = dataArray.length; i < length; i++)
			{
				String name = dataArray[i];
				HSSFRow row = hidden.createRow(i);
				cell = row.createCell(0);
				cell.setCellValue(name);
			}
			Name namedCell = workbook.createName();
			namedCell.setNameName("hidden"+firstCol);
			namedCell.setRefersToFormula("hidden"+firstCol+"!$A$1:$A$" + dataArray.length);
			//加载数据,将名称为hidden的
			DVConstraint constraint = DVConstraint.createFormulaListConstraint("hidden"+firstCol);
			// 设置数据有效性加载在哪个单元格上,四个参数分别是：起始行、终止行、起始列、终止列
			CellRangeAddressList addressList = new CellRangeAddressList(firstRow, 1000, firstCol,
					firstCol);
			HSSFDataValidation validation = new HSSFDataValidation(addressList, constraint);
			//将第二个sheet设置为隐藏
			workbook.setSheetHidden(workbook.getSheetIndex(hidden), true);

			return validation;
		}

		// 创建一个规则
		// DVConstraint.create
		DVConstraint constraint1 = DVConstraint
				.createExplicitListConstraint(explicitListValues);

		// 设定在哪个单元格生效
		int lastRow = 1000;// 一千行都有效
		int lastCol = firstCol;
		CellRangeAddressList regions = new CellRangeAddressList();
		regions.addCellRangeAddress(firstRow, firstCol, lastRow, lastCol);

		// 创建规则对象
		HSSFDataValidation data_validation = new HSSFDataValidation(regions,constraint1);
		data_validation.setEmptyCellAllowed(false);
		data_validation.setShowPromptBox(false);
		data_validation.createPromptBox("输入提示！", "请选择下拉列表里的内容！");
		return data_validation;
	}

	public void make(HSSFWorkbook workbook, HSSFSheet sheet, HSSFSheet hideSheet, int start, int end, List<Integer> firstCols){
		List<String> provNameList = makeProvNameList();
		int rowId = 0;
		// 设置第一行，存省的信息
		HSSFRow proviRow = hideSheet.createRow(rowId++);
		proviRow.createCell(0).setCellValue("省列表");
		for(int i = 0; i < provNameList.size(); i ++){
			Cell proviCell = proviRow.createCell(i + 1);
			proviCell.setCellValue(provNameList.get(i));
		}
		// 将具体的数据写入到每一行中，行开头为父级区域，后面是子区域。
		Map<String,List<String>> siteMap = makeSiteMap();
		Iterator<String> keyIterator = siteMap.keySet().iterator();
		while(keyIterator.hasNext()){
			String key = keyIterator.next();
			List<String> son = siteMap.get(key);

			HSSFRow row = hideSheet.createRow(rowId++);
			row.createCell(0).setCellValue(key);
			for(int i = 0; i < son.size(); i ++){
				Cell cell = row.createCell(i + 1);
				cell.setCellValue(son.get(i));
			}

			// 添加名称管理器
			String range = getRange(1, rowId, son.size());
			Name name = workbook.createName();
			name.setNameName(key);
			String formula = "site!" + range;
			name.setRefersToFormula(formula);
		}

		for(int f=0; f<firstCols.size(); f++){
			// 省规则
			DVConstraint provConstraint = DVConstraint.createExplicitListConstraint(provNameList.toArray(new String[] {}));
			CellRangeAddressList provRangeAddressList = new CellRangeAddressList(start, 1000, firstCols.get(f), firstCols.get(f));
			DataValidation provinceDataValidation = new HSSFDataValidation(provRangeAddressList, provConstraint);
			provinceDataValidation.createErrorBox("error", "请选择正确的省份");
			sheet.addValidationData(provinceDataValidation);

			// 市以规则，此处仅作一个示例
			// "INDIRECT($A$" + 2 + ")" 表示规则数据会从名称管理器中获取key与单元格 A2 值相同的数据，如果A2是浙江省，那么此处就是
			// 浙江省下的区域信息。
			// getExcelColumnLabel(firstCol+1)获取省对应列字母来联动
			for(int i = 5; i <= 1000; i++){
				DVConstraint formula = DVConstraint.createFormulaListConstraint("INDIRECT($"+getExcelColumnLabel(firstCols.get(f))+"$" + i + ")");
				CellRangeAddressList rangeAddressList = new CellRangeAddressList(i-1, i-1, firstCols.get(f)+1, firstCols.get(f)+1);
				DataValidation cacse = new HSSFDataValidation(rangeAddressList, formula);
				cacse.createErrorBox("error", "请选择正确的市");
				sheet.addValidationData(cacse);

				// 区规则  getExcelColumnLabel(firstCol+1)获取市对应列字母来联动
				formula = DVConstraint.createFormulaListConstraint("INDIRECT($"+getExcelColumnLabel(firstCols.get(f)+1)+"$" + i + ")");
				rangeAddressList = new CellRangeAddressList(i-1, i-1, firstCols.get(f)+2, firstCols.get(f)+2);
				cacse = new HSSFDataValidation(rangeAddressList, formula);
				cacse.createErrorBox("error", "请选择正确的区");
				sheet.addValidationData(cacse);
			}
		}

	}

	/**
	 * 制作所有的省的list
	 */
	public static List<String> makeProvNameList (){
		List<String> provNameList = new ArrayList<String>();
		try {
			JSONArray jsonArray = new JSONArray().parseArray(provinceList);

			for(int i = 0;i<jsonArray.size();i++){
				JSONObject jsonob = new JSONObject().parseObject(jsonArray.get(i).toString());
				provNameList.add(jsonob.get("name").toString());
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return provNameList;
	}

	/**
	 * 制作所有市和区list
	 * @return
	 */
	public Map<String, List<String>> makeSiteMap(){
		Map<String, List<String>> siteMap = new HashMap<String, List<String>>();

		try {
			JSONArray jsonArray = new JSONArray().parseArray(provinceList);

			for(int i = 0;i<jsonArray.size();i++){
				JSONObject jsonob = new JSONObject().parseObject(jsonArray.get(i).toString());

				JSONArray jsonArrays = new JSONArray().parseArray(jsonob.getString("cityList"));

				List<String> list = new ArrayList<String>();
				for(int j = 0;j<jsonArrays.size();j++){
					JSONObject jsonobs = new JSONObject().parseObject(jsonArrays.get(j).toString());
					list.add(jsonobs.get("name").toString());

					JSONArray jsonArrayse = new JSONArray().parseArray(jsonobs.getString("areaList"));

					List<String> liste = new ArrayList<String>();
					for(int k = 0;k<jsonArrayse.size();k++){
						liste.add(jsonArrayse.get(k).toString());
					}
					//省的名字是key值，value是省下面的市
					siteMap.put(jsonobs.get("name").toString(), liste);

				}
				//省的名字是key值，value是省下面的市
				siteMap.put(jsonob.get("name").toString(), list);

			}
		} catch (Exception e) {
			e.printStackTrace();
		}

		return siteMap;
	}

	/**
	 * 设置有效性
	 * @param offset 主影响单元格所在列，即此单元格由哪个单元格影响联动
	 * @param sheet
	 * @param rowNum 行数
	 * @param colNum 列数
	 */
	public static void setDataValidation(String offset,XSSFSheet sheet, int rowNum,int colNum) {
		XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper(sheet);
		DataValidation data_validation_list;
		data_validation_list = getDataValidationByFormula(
				"INDIRECT($" + offset + (rowNum) + ")", rowNum, colNum,dvHelper);
		sheet.addValidationData(data_validation_list);
	}

	/**
	 * 加载下拉列表内容
	 * @param formulaString
	 * @param naturalRowIndex
	 * @param naturalColumnIndex
	 * @param dvHelper
	 * @return
	 */
	private static  DataValidation getDataValidationByFormula(
			String formulaString, int naturalRowIndex, int naturalColumnIndex,XSSFDataValidationHelper dvHelper) {
		// 加载下拉列表内容
		// 举例：若formulaString = "INDIRECT($A$2)" 表示规则数据会从名称管理器中获取key与单元格 A2 值相同的数据，
		//如果A2是江苏省，那么此处就是江苏省下的市信息。
		XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint) dvHelper.createFormulaListConstraint(formulaString);
		// 设置数据有效性加载在哪个单元格上。
		// 四个参数分别是：起始行、终止行、起始列、终止列
		int firstRow = naturalRowIndex -1;
		int lastRow = naturalRowIndex - 1;
		int firstCol = naturalColumnIndex - 1;
		int lastCol = naturalColumnIndex - 1;
		CellRangeAddressList regions = new CellRangeAddressList(firstRow,
				lastRow, firstCol, lastCol);
		// 数据有效性对象
		// 绑定
		XSSFDataValidation data_validation_list = (XSSFDataValidation) dvHelper.createValidation(dvConstraint, regions);
		data_validation_list.setEmptyCellAllowed(false);
		if (data_validation_list instanceof XSSFDataValidation) {
			data_validation_list.setSuppressDropDownArrow(true);
			data_validation_list.setShowErrorBox(true);
		} else {
			data_validation_list.setSuppressDropDownArrow(false);
		}
		// 设置输入信息提示信息
		data_validation_list.createPromptBox("下拉选择提示", "请使用下拉方式选择合适的值！");
		// 设置输入错误提示信息
		//data_validation_list.createErrorBox("选择错误提示", "你输入的值未在备选列表中，请下拉选择合适的值！");
		return data_validation_list;
	}

	/**
	 *  计算formula
	 * @param offset 偏移量，如果给0，表示从A列开始，1，就是从B列
	 * @param rowId 第几行
	 * @param colCount 一共多少列
	 * @return 如果给入参 1,1,10. 表示从B1-K1。最终返回 $B$1:$K$1
	 *
	 */
	public static String getRange(int offset, int rowId, int colCount) {
		char start = (char)('A' + offset);
		if (colCount <= 25) {
			char end = (char)(start + colCount - 1);
			return "$" + start + "$" + rowId + ":$" + end + "$" + rowId;
		} else {
			char endPrefix = 'A';
			char endSuffix = 'A';
			if ((colCount - 25) / 26 == 0 || colCount == 51) {// 26-51之间，包括边界（仅两次字母表计算）
				if ((colCount - 25) % 26 == 0) {// 边界值
					endSuffix = (char)('A' + 25);
				} else {
					endSuffix = (char)('A' + (colCount - 25) % 26 - 1);
				}
			} else {// 51以上
				if ((colCount - 25) % 26 == 0) {
					endSuffix = (char)('A' + 25);
					endPrefix = (char)(endPrefix + (colCount - 25) / 26 - 1);
				} else {
					endSuffix = (char)('A' + (colCount - 25) % 26 - 1);
					endPrefix = (char)(endPrefix + (colCount - 25) / 26);
				}
			}
			return "$" + start + "$" + rowId + ":$" + endPrefix + endSuffix + "$" + rowId;
		}
	}

	/**
	 * 根据excel列数获取对应列字母
	 * @param num
	 * @return
	 */
	public static String getExcelColumnLabel(int num) {
		String temp = "";
		double i = Math.floor(Math.log(25.0 * (num) / 26.0 + 1) / Math.log(26)) + 1;
		if (i > 1) {
			double sub = num - 26 * (Math.pow(26, i - 1) - 1) / 25;
			for (double j = i; j > 0; j--) {
				temp = temp + (char) (sub / Math.pow(26, j - 1) + 65);
				sub = sub % Math.pow(26, j - 1);
			}
		} else {
			temp = temp + (char) (num + 65);
		}
		return temp;
	}
}  